// 给定一个长度为 n 的整数数组 nums 。

// 假设 arrk 是数组 nums 顺时针旋转 k 个位置后的数组，我们定义 nums 的 旋转函数  F 为：

// F(k) = 0 * arrk[0] + 1 * arrk[1] + ... + (n - 1) * arrk[n - 1]
// 返回 F(0), F(1), ..., F(n-1)中的最大值 。
int maxRotateFunction(int* nums, int numsSize){
    int sum=0;
    int f=0;
    int j=1;
    int ans[1000000]={0};
    int maxi=0;
    int n=numsSize;
    for(int i=0;i<numsSize;i++)
    {
        sum+=nums[i];
        ans[0]+=i*nums[i];//计算f（0）
    }
    for(int i=0;i<numsSize-1;i++)
    {
        // nums: [A0,A1,A2,A3]

//  F0 = 0*A0 + 1*A1 + 2*A2 + 3*A3

//  F1 = 0*A3 + 1*A0 + 2*A1 + 3*A2 
//     = F0 + A0 + A1 + A2 - 3*A3 
//     = F0 + sum-A3 - 3*A3 
//     = F0 + sum - 4*A3

//  F2 = 0*A2 + 1*A3 + 2*A0 + 3*A1 
//     = F1 + A3 + A0 + A1 - 3*A2 
//     = F1 + sum - 4*A2

//  F3 = 0*A1 + 1*A2 + 2*A3 + 3*A0 
//     = F2 + A2 + A3 + A0 - 3*A1 
//     = F2 + sum - 4*A1
   // F(i) = F(i-1) + sum - n * A(n-i)
    
        ans[i+1]=ans[i]+sum-n*nums[n-1-i];
    }
    for(int i=0;i<numsSize;i++)
    {
        if(ans[maxi]<ans[i])
        {
            maxi=i;
        }
    }
    return ans[maxi];
}
//小结：对于这种复杂的可以写几个找前后项的关系